package com.wangsir.service;

import com.wangsir.dao.ClazzDao;
import com.wangsir.dao.StudentDao;
import com.wangsir.entity.Clazz;
import com.wangsir.entity.Student;
import com.wangsir.util.PagerVO;
import jdk.nashorn.internal.ir.CallNode;

import java.util.List;

public class ClazzService {
    private ClazzDao clazzDao = new ClazzDao();
    private StudentDao studentDao = new StudentDao();

    //单元测试
    public static void main(String[] args) {
        ClazzService clazzService = new ClazzService();
        List<Clazz> statistics = clazzService.statistics();
        System.out.println(clazzService.count());
        for(Clazz clazz : statistics){
            System.out.println(clazz);
        }
    }

    //查询班级的总数量
    public int count(){
        return clazzDao.count();
    }


    //每个班级学生的人数
    public List<Clazz> statistics(){
        return clazzDao.statistics();
    }

    //某页班级的信息
    public PagerVO<Clazz> page(int currentPage, int pageSize, String clazzno, String name){
        String whereSql = " where 1=1 ";
        //拼接sql,不等于null和空字符串的时候才进行一个拼接
        if(clazzno!=null&&!clazzno.equals("")){
            whereSql += "and clazzno like '%" + clazzno + "%'";
        }
        if(name!=null&&!name.equals("")){
            whereSql += "and name like '%" + name + "%'";
        }
        return clazzDao.page(currentPage,pageSize,whereSql);
    }

    //删除班级
    public String  delete(String clazzno){
        //判断改班级是否还要学上的存在
        int count = studentDao.count(" where clazzno = '" + clazzno +"'");
        if(count > 0 ){
            return "删除失败，该班级有"+count+"学生存在！";
        }
        //代码执行到这里说明count <= 0:代表的是该班级没有学生存在，满足删除的条件。
        clazzDao.delete(clazzno);
        return null;
    }
    //查询班级的信息
    public Clazz getByClazznNO(String clazzno){
        return clazzDao.getByClazznNO(clazzno);
    }
    //新增班级
    public String insertClazz(Clazz clazz){
        //判断用户是否添加班级号以及班级的名字
        if(clazz.getClazzNo() == null || clazz.getClazzNo().equals("")){
            return "新增班级的班级号不可以为空!";
        }
        if(clazz.getName() == null || clazz.getName().equals("")){
            return "新增班级的名字不可以为空！";
        }
        //查询要新增的班级的号码是否和数据库中已存在的号码相等，相等则不可以插入，因为主键为唯一
        Clazz clazz1 = clazzDao.getByClazznNO(clazz.getClazzNo());
        if(clazz1.getClazzNo() != null){
            return "新增班级的班级号已经存在！";
        }
        int count = clazzDao.insertClazz(clazz);
        //新增成功返回空
        return null;
    }
    //修改班级的信息
    public String updateClazz(Clazz clazz){
        if(clazz.getClazzNo() == null  || clazz.getClazzNo().equals("")){
            return "被更新班级的班级号不可以为空！";
        }
        int result = clazzDao.updateClazz(clazz);
        //更新成功返回null
        return null;
    }

    public List<Clazz> listAll() {
        return clazzDao.listAll();
    }
}
